﻿using System;
using System.Transactions;
using Kaesoft.Hospedaje.Auditoria;
using Kaesoft.Hospedaje.Excepciones;

namespace Kaesoft.Hospedaje.Data
{
    public partial class ReservacionesEntities
    {
        public string Usuario { get; set; }
        public string Ip { get; set; }

        public override int SaveChanges(System.Data.Objects.SaveOptions options)
        {
            try
            {
                using (var trans = new TransactionScope())
                {
                    this.DetectChanges();
                    AuditoriaBase.MetodoAuditoria<ReservacionesEntities>(this, Usuario, Ip);

                    var resultado = base.SaveChanges(options);
                    trans.Complete();
                    return resultado;
                }
            }
            catch (Exception excepcion)
            {
                var mensaje = excepcion.InnerException != null ? excepcion.InnerException.Message : excepcion.Message;
                AuditoriaBase.MetodoAuditoria(mensaje, Usuario, Ip);
                ControladorExcepciones.Procesar(excepcion, "Error al procesar auditoría.", false);
                throw;
            }
        }
    }
}
